Raport zawiera analizę danych krystograficznych pochodzących z bazy Protein Data Bank (PDB). Ze względu na brak danych w niektórych rekordach, należało je odpowiednio uzupełnić bądź niekiedy pominąć. Analizowany zbiór danych składa się z wielu atrybutów, więc na potrzeby poszczególnych analiz wymagane było staranne dobranie odpowiedniego zakresu danych. W raporcie zdefiniowano znaczenie poszczególnych zmiennych oraz sprawdzono korelację między atrybutami. W ostatniej części projektu należało zbudować model regresji oraz stworzyć klasyfikator przewidujący wartość atrybutu res_name.
Przedmiotem niniejszego raportu są dane pochodzące z bazy Protein Data Bank. W bazie PDB przechowywane są dane strukturalne białek oraz innych związków chemicznych. Dokument ma na celu analizę tych danych oraz ocenę możliwości wykorzystania uczenia maszynowego do automatycznego podpowiadania biologom jakie cząsteczki mogą się kryć w niewymodelowanych fragmentach map intensywności.
Zbiór składa się z 581429 obserwacji oraz 412 atrybutów. Poniżej zamieszczone zostały statystyki dla wybranych zmiennych.
Pierwsze atrybuty zbioru zawierają informacje o identyfikatorze pliku PDB, nazwie ligandu oraz umiejscowieniu cząsteczki w białku. Ta grupa zmiennych służy do identyfikacji opisanych w wierszach cząsteczek chemicznych. Zmienne te są typu znakowego.
| Length | Class | Mode | |
|---|---|---|---|
| res_coverage | 581429 | character | character |
| title | 581429 | character | character |
| pdb_code | 581429 | character | character |
| res_name | 581429 | character | character |
| res_id | 581429 | character | character |
| chain_id | 581429 | character | character |
Poniższa tabela przedstawia podsumowanie zmiennych informujących o liczbie atomów i elektronów ligandu zamodelowanych w pliku PDB (local) oraz wyliczonych na podstawie danych słownikowych (“tablicy pierwiastków”) (dict).
| Min. | 1st Qu. | Median | Mean | 3rd Qu. | Max. | |
|---|---|---|---|---|---|---|
| local_res_atom_count | 1.00 | 4 | 6 | 14.0182137 | 20 | 178 |
| local_res_atom_non_h_count | 1.00 | 4 | 6 | 13.6758693 | 20 | 111 |
| local_res_atom_non_h_occupancy_sum | -7.38 | 4 | 6 | 13.2247024 | 18 | 111 |
| local_res_atom_non_h_electron_sum | 3.00 | 30 | 50 | 101.3082509 | 136 | 1848 |
| local_res_atom_non_h_electron_occupancy_sum | -45.91 | 28 | 48 | 97.2337432 | 128 | 858 |
| local_res_atom_C_count | 0.00 | 0 | 3 | 7.8528849 | 10 | 84 |
| local_res_atom_N_count | 0.00 | 0 | 0 | 1.2066374 | 1 | 28 |
| local_res_atom_O_count | 0.00 | 1 | 3 | 3.8131965 | 5 | 61 |
| local_res_atom_S_count | 0.00 | 0 | 0 | 0.2192082 | 0 | 13 |
| Min. | 1st Qu. | Median | Mean | 3rd Qu. | Max. | NA’s | |
|---|---|---|---|---|---|---|---|
| dict_atom_non_h_count | 1 | 4 | 6 | 14.0169202 | 20 | 128 | 11756 |
| dict_atom_non_h_electron_sum | 3 | 30 | 48 | 103.8283296 | 136 | 1223 | 11756 |
| dict_atom_C_count | 0 | 0 | 3 | 7.9965524 | 10 | 93 | 11756 |
| dict_atom_N_count | 0 | 0 | 0 | 1.1854169 | 1 | 28 | 11756 |
| dict_atom_O_count | 0 | 1 | 3 | 4.0235784 | 6 | 55 | 11756 |
| dict_atom_S_count | 0 | 0 | 0 | 0.2188203 | 0 | 13 | 11756 |
Kolejna grupa atrybutów opisuje wartości obliczone tylko na podstawie ligandu. Liczba pojawiająca się po “part_” koduje próg odcięcia intensywności. Dla każdego progu odcięcia występują te same atrybuty, a w tabeli poniżej przedstawione zostały przykładowe atrybuty dla odcięcia part_01.
| Min. | 1st Qu. | Median | Mean | 3rd Qu. | Max. | NA’s | |
|---|---|---|---|---|---|---|---|
| protein.part_01_shape_CI | -142.6431085 | -6.149662e-01 | 1.457000e-04 | 3.782560e-02 | 6.496026e-01 | 9.132459e+01 | 5713 |
| protein.part_01_density_O3 | 2.5714489 | 6.892338e+03 | 3.226855e+04 | 6.740927e+05 | 1.930850e+05 | 4.912020e+08 | 5713 |
| protein.part_01_density_E2_E1 | 0.0000880 | 2.027450e-01 | 3.924669e-01 | 4.277482e-01 | 6.363920e-01 | 1.000000e+00 | 5713 |
| protein.part_01_density_sqrt_E1 | 0.9251489 | 3.192951e+00 | 4.918191e+00 | 7.198507e+00 | 9.237882e+00 | 2.021732e+02 | 5713 |
| protein.part_01_density_I6 | 16.0944423 | 6.671601e+08 | 2.825257e+10 | 3.048405e+16 | 3.851878e+12 | 3.827444e+21 | 5713 |
| protein.part_01_density_M000 | 0.4672308 | 2.916152e+02 | 7.792077e+02 | 1.902928e+03 | 2.106748e+03 | 4.946192e+04 | 5713 |
| protein.part_01_density_FL | -20.3437815 | 2.178290e+07 | 2.668230e+09 | 2.745975e+15 | 5.959460e+11 | 2.970710e+20 | 5713 |
| protein.part_01_density_FL_norm | -0.0406061 | 1.041900e-03 | 1.217200e-02 | 7.957570e-01 | 1.440805e-01 | 1.474174e+04 | 5713 |
W zbiorze wysępują zmienne, które mają w nazwie norm lub sqrt. Są to wartości obliczone z istniejących już w zbiorze wartości, prezentują więc te same informacje. Aby nie dublować tych samych wartości, kolumny te zostały wykluczone z obliczania regresji i klasyfikatora.
Jak widać na powyższym podsumowaniu, w danych znajduje się wiele pustych wartości. Wartości NA występowały między innymi na atrybutach potencjalne ważnych dla późniejszej analizy, wobec czego dane te należało uzupełnić. Zostało to dokonane w następujący sposób: przed analizą wybranego zbioru danych, wartości NA z tego zbioru zostały uzupełniane średnią danej wartości dla danej klasy res_name.
Ze wględu na zbyt duzą ilość kolumn w zbiorze zrezygnowano ze sprawdzenia korelacji wszystkich par zmiennych. Przedstawienie takiego zestawienia byłoby nieczytelne oraz kosztowne obliczeniowo.
W raporcie została więc przedstawiona korelacja jedynie kolumn prezentujących atrybuty dla odcięcia poziomu 1. Są to kolumny, których wartości obliczone zostały tylko na podstawie ligandu, warto jest więc zapoznać się z ich wzajemnymi zależnościami.
Z zakresu danych zostały odjęte zmienne zawierające w nazwie norm i sqrt. Dane te są silnie skorelowane ze zmiennymi na bazie których powstały, więc dodawanie ich do wykresu zmniejszyłoby jego czytelność.
Na każdą z klas przypada następująca liczba przykładów:
Na podstawie powyższych histogramów nie można kategorycznie stwierdzić, że ilość elektronów jest wprost proporcjonalna do ilości atomów, gdyż jak wiadomo, ilość elektronów w atomie jest zależna również od masy atomowej danego pierwiastka. Niższa wartość w pierwszym pojemniku histogramu rozkładu liczby elektronów wynika z faktu, że pierwiastki wchodzące w skład ligandu mogą mieć mniejszą masę atomową (ilość elektronów = liczba protonów w atomie danego pierwiastka).
Poniżej interaktywny wykresy średniej liczby atomów i elektronów dla pięćdziesięciu najlpopularniejszych klas res_name:
Największa maksymalna niezgodność liczby atomów została osiągnięta dla następujących klas:
| res_name | Maksimum |
|---|---|
| COA | 41 |
| CLA | 40 |
| NAP | 39 |
| NAD | 33 |
| FAD | 26 |
| NDP | 26 |
| ATP | 22 |
| ADP | 19 |
| GDP | 18 |
| NAG | 14 |
Z kolei następujące klasy osiągnęły największą średnią niezgodność liczby atomów:
| res_name | Srednia |
|---|---|
| CLA | 5.2451923 |
| 1PE | 2.6633895 |
| UNK | 2.2000000 |
| COA | 1.8346312 |
| MLY | 1.3265888 |
| NAP | 1.2833096 |
| PG4 | 1.0440751 |
| NDP | 0.9881292 |
| NAG | 0.9801214 |
| MAN | 0.8944034 |
Największa maksymalna niezgodność liczby elektronów została osiągnięta dla następujących klas:
| res_name | Maksimum |
|---|---|
| COA | 309 |
| NAP | 298 |
| CLA | 250 |
| NAD | 246 |
| FAD | 197 |
| ATP | 179 |
| NDP | 170 |
| ADP | 134 |
| GDP | 121 |
| NAG | 97 |
Z kolei następujące klasy osiągnęły największą średnią niezgodność liczby elektronów:
| res_name | Srednia |
|---|---|
| CLA | 32 |
| 1PE | 18 |
| UNK | 15 |
| COA | 14 |
| MLY | 10 |
| NAP | 9 |
| NAG | 8 |
| MAN | 7 |
| NDP | 7 |
| PG4 | 7 |
W tej sekcji zobrazowano rozkłady wartości kolumn należących do pierwszego odcięcia.
Jak łatwo zauważyć, dla wielu z kolumn wartości w zbiorze danych skupione są w okolicy zera za wyjątkiem pewnych, nieraz daleko oddalonych ekstremów. Możliwe, że obecność takich ekstremów jest charakterystyczna dla określonych klas ligandów, co mogło by wspomóc dalszą analizę i klasyfikację.
Jako model został użyty schemat 10-fold cross-validation + holdout. Polega on na podzieleniu zbioru na dwa zbiory: uczący (80% próbek) oraz testowy (20% próbek), a następnie podzielenie zbioru uczącego wg. powtórzonej walidacji krzyżowej. Zbiór ten dzielony jest na 10 podzbiorów. Następnie następuje 10 tur analizy, podczas której każdy z podzbiorów w swojej turze staje się zbiorem walidującym, a pozostałe - uczącym. Dodatkowo dokonano optymalizacji parametrów - zastosowano dodatkowe skalowanie i centrowanie danych. Jako algorytm wybrano regresję liniową.
Do regresji zostały użyte następujące grupy zmiennych: zmienne informujące o liczbie atomów i elektronów ligandu zamodelowanych w pliku PDB (local) oraz wyliczone na podstawie danych słownikowych (“tablicy pierwiastków”) (dict), wartości obliczone na podstawie ligandu dla odcięcia part_01 bez zmiennych sqrt i norm.
| Wyniki dla przewidywania liczby elektronów | |
|---|---|
| LM_RMSE | 0.3299087 |
| LM_R^2 | 0.9999867 |
| Overall | |
|---|---|
| dict_atom_non_h_electron_sum | 100.000000 |
| dict_atom_non_h_count | 21.072482 |
| local_res_atom_non_h_count | 20.553652 |
| dict_atom_S_count | 6.308712 |
| local_res_atom_S_count | 6.269176 |
| dict_atom_C_count | 4.071570 |
| local_res_atom_C_count | 3.805927 |
| dict_atom_O_count | 2.716241 |
| local_res_atom_O_count | 2.660747 |
| local_res_atom_non_h_electron_occupancy_sum | 0.890095 |
| Wyniki dla przewidywania liczby atomów | |
|---|---|
| LM_RMSE | 0.0400497 |
| LM_R^2 | 0.9999911 |
| Overall | |
|---|---|
| dict_atom_non_h_count | 100.000000 |
| local_res_atom_non_h_electron_sum | 35.492957 |
| dict_atom_non_h_electron_sum | 34.067628 |
| local_res_atom_C_count | 18.143674 |
| dict_atom_C_count | 17.872308 |
| dict_atom_S_count | 7.373756 |
| local_res_atom_S_count | 7.286738 |
| local_res_atom_N_count | 4.887525 |
| dict_atom_N_count | 4.474226 |
| local_res_atom_O_count | 3.073324 |
| Zarówno wyniki dla przewidywania liczby elektronów jak i przewidywania liczby atomów wyglądają zadowalająco. Wynika to z obecności słownikowych wartości liczby elektronów i atomów w zbiorze danych. Powyższa tabela pokazuje, iż reszta zmiennych w regresji nie były zbyt istotne. |
Do klasyfikacji zostały użyte wartości obliczone na podstawie ligandu dla odcięcia part_01 bez zmiennych sqrt i norm. Jako model został użyty schemat taki sam jak w przypadku regresji. Użyty algorytm klasyfikacji to support vector machine (SAV), który uważany jest za jeden z najszybciej działających klasyfikatorów.
| x | |
|---|---|
| Accuracy | 0.3720693 |
Precyzja klasyfikacji wynosi około 38 procent. Nie jest to zbyt zadowalający wynik. Użycie innej odmiany SVM (np. radial kernel) oraz regulacja parametrów algortymu z pewnością poprawiłoby trafność klasyfikacji.